<template>
  <!-- 放置一个图标 -->
  <div>
    <!--
      svg-icon组件显示的图标由icon-class决定 只要传入不同的icon-class名称就能渲染不一样的icon图标
      思路：把icon-class从静态变成动态渲染，根据当前isScreenFull字段匹配不一样的名称即可
     -->
    <svg-icon :icon-class="isScreenFull ? 'exit-fullscreen' : 'fullscreen'" class="fullscreen" @click="clickHandler" />
  </div>
</template>

<script>
export default {
  name: 'ScreenFull',
  data() {
    return {
      // 控制全屏变量
      isScreenFull: false
    }
  },
  mounted() {
    document.addEventListener('fullscreenchange', () => {
      console.log('全屏状态切换了')
      // 监听到屏幕变化，在回调中判断是否已退出全屏 如果已退出全屏 把本地状态修改为false
      // isFull如果为null就代表全屏已经关闭了 isScreenFull需要变成false
      const isFull = document.fullscreenElement
      console.log(isFull)
      if (isFull === null) {
        this.isScreenFull = false
      }
    })
  },
  methods: {
    clickHandler() {
      // 判断
      // 如果当前未开启全屏 就调用开启全屏api
      // 如果当前已经开启了 调用关闭全屏api
      // 调用开启全屏api开启全屏
      if (this.isScreenFull) {
        // 关闭全屏
        document.exitFullscreen()
      } else {
        // 开启全屏
        document.documentElement.requestFullscreen()
      }
      // 变量取反  切换
      // 调用一次api之后 把当前的状态切换一下
      this.isScreenFull = !this.isScreenFull
    }
  }
}
</script>

<style lang="scss" scoped>
.fullscreen {
  width: 20px;
  height: 20px;
  color: #fff;
  cursor: pointer;
}
</style>
